home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / C64 / T-TPUG Old Monthly Disks / (c)t3.d64 / column calc.c (.txt) < prev    next >
Commodore BASIC  |  2007-02-04  |  6KB  |  254 lines

  1. 5 REM"ADAPTED BY STEVEN DARNOLD, P.O. BOX 201 ALEXANDRA, NEW ZEALAND
  2. 8 [151]53280,6:[151]53281,6
  3. 9 [134]V(15,60),X$(50),V$(15,60):CR$[178]"LOAD":CT$[178]"OPEN ******* CALCULATING *******CONT"
  4. 10 [153]"RETURNLOADOPENC O L U M N      C A L C U L A T O R":C%[178]1:R%[178]1
  5. 20 [153]"CONT    VCONTIEW COLUMNS
  6. 30 PRINT"    E[154]NTER DATA
  7. 40 [153]"    DCONTO CALCULATIONS
  8. 50 PRINT"    Z[154]ERO MATRIX
  9. 60 [153]"    GCONTET DATA FROM TAPE
  10. 70 PRINT"    S[154]AVE DATA ON TAPE
  11. 80 [153]"    MCONTEMORY CHECK
  12. 85 PRINT"    P[154]RINT DATA ON PRINTER"
  13. 95 PRINT"[159]WHAT IS YOUR CHOICE ?":Y=0
  14. 96 GETAN$:IFAN$=""THEN96
  15. 97 FORX=1TO8:IFAN$=MID$("VEDZGSMP",X,1)THENY=X
  16. 98 NEXT:ONYGOSUB230,1000,2020,120,702,802,940,12010:GOTO10
  17. 120 PRINTCR$:FORX=1TO15
  18. 130 FORY=1TO50
  19. 140 V(X,Y)=0
  20. 150 NEXTY
  21. 160 NEXTX
  22. 165 RETURN
  23. 190 INPUT"[147]ENTER COLUMN (1 TO 13):";C%
  24. 200 IFC%<1ORC%>13THENPRINT"[147]";:GOTO190
  25. 210 PRINT:INPUT"ENTER ROW (1 TO 31):";R%
  26. 220 IFR%<1ORR%>31THEN210
  27. 230 PRINT"[147]";:GOSUB500
  28. 240 PRINT"";
  29. 250 FORY=R%TOR%+19
  30. 260 PRINTTAB(9);
  31. 270 FORX=C%TOC%+2
  32. 280 X$=STR$(V(X,Y))
  33. 290 PRINTSPC(10-LEN(X$));X$;
  34. 300 NEXT
  35. 310 PRINTCHR$(13);
  36. 320 NEXT
  37. 325 PRINT"                                         ";
  38. 330 PRINT"U[154]P   D[154]OWN   L[154]EFT   R[154]IGHT   J[154]UMP   M[154]ENU";
  39. 340 GETC$:IFC$=""THEN340
  40. 360 IFC$="U"THENR%=R%-10:PRINTCHR$(13);"";:GOTO220
  41. 380 IFC$="D"THENR%=R%+10:PRINTCHR$(13);"";:GOTO220
  42. 400 IFC$="L"THENC%=C%-2:GOTO470
  43. 420 IFC$="R"THENC%=C%+2:GOTO470
  44. 440 IFC$="J"THEN190
  45. 450 IFC$="M"THEN10
  46. 460 GOTO340
  47. 470 IFC%<1ORC%>13THENPRINTCHR$(13);:GOTO190
  48. 480 GOTO230
  49. 500 PRINTTAB(9);
  50. 510 FORI=1TO3
  51. 520 PRINT"[154]    COLUMN[146]";
  52. 530 NEXT
  53. 540 PRINTCHR$(13);TAB(9);
  54. 550 FORI=C%TOC%+2
  55. 560 S%=7:IFI<10THENS%=8
  56. 570 PRINTSPC(S%);"";STR$(I);"[146]";
  57. 580 NEXT
  58. 590 PRINTCHR$(13);
  59. 600 FORI=R%TOR%+19
  60. 610 S$="":IFI<10THENS$=" "
  61. 620 PRINTTAB(2);"[154]ROW"S$STR$(I);"[146][159]"
  62. 630 NEXT
  63. 640 RETURN
  64. 702 INPUT"[147]WHAT IS NAME OF FILE YOU WANT";FL$
  65. 710 PRINT"[147]LOOKING FOR ";FL$
  66. 720 OPEN1,1,0,(FL$)
  67. 725 PRINT"FOUND ";FL$;" .....LOADING"
  68. 730 FORX=1TO12
  69. 740 FORY=1TO49
  70. 750 INPUT#1,V(X,Y)
  71. 760 NEXTY
  72. 770 NEXTX
  73. 780 (null)#1:PRINT"OK.....GOT DATA"
  74. 790 FORI=1TO1000:NEXTI
  75. 795 RETURN
  76. 802 INPUT"[147]WHAT NAME FOR THIS FILE";FL$
  77. 840 OPEN1,1,1,(FL$)
  78. 850 FORX=1TO12
  79. 860 FORY=1TO49
  80. 870 PRINT#1,V(X,Y)
  81. 880 NEXTY
  82. 890 NEXTX
  83. 900 (null)#1:PRINT"OK.....DATA ON TAPE"
  84. 910 FORI=1TO1000:NEXTI
  85. 920 RETURN
  86. 940 PRINT"  "FRE(A)"BYTES FREE
  87. 950 [129]I[178]1[164]1000:[130]I
  88. 960 [142]
  89. 1000 [153]"LOAD":[153]
  90. 1010 [133]"WHICH COLUMN (1-12)";K$
  91. 1020 CL[178][197](K$):[139]CL[179]1[176]CL[177]12[167]1000
  92. 1030 [139]CL[178]13[176]CL[178]14[176]CL[178]15[167][153]"RESERVED FOR TOTALS":[137]1010
  93. 1040 [133]"HOW MANY ROWS (1-50)";K$
  94. 1050 K[178][197](K$):[139]K[177]50[176]K[179]1[167]1040
  95. 1060 [153]:[153]"ROW","CURRENT","COLUMN";CL
  96. 1070 [129]Y[178]1[164]K
  97. 1080 [153]:[153]Y,V(CL,Y),:[133]"CMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMD";V:V(CL,Y)[178]V
  98. 1090 [130]Y
  99. 1100 [153]"CCONT FOR ANOTHER COLUMN        MCONT FOR MENU
  100. 1110 GETD$:IFD$=""THEN1110
  101. 1120 IFD$="C"THEN1000
  102. 1130 RETURN
  103. 2020 PRINT"[147][159]YOU MAY CHOOSE ANY OF THE FOLLOWING"
  104. 2030 PRINT"  1[154] SUM DOWN COLUMNS
  105. 2040 [153]"  2CONT SUM ACROSS ROWS
  106. 2050 PRINT"  3[154] REPRODUCE ANY COLUMN
  107. 2060 [153]"  4CONT ADD-MULT-DIV-SUB AT ANY POINT
  108. 2070 PRINT"  5[154] AVERAGE ACROSS ROWS (DO 2[146] FIRST)
  109. 2080 [153]"  6CONT MAKE ROW % OF BASE ROW
  110. 2090 PRINT"  7[154] MAKE COLUMN % OF BASE COLUMN
  111. 2100 [153]"  8CONT SUM INDIVIDUAL COLUMNS
  112. 2110 PRINT"  9[154] SERIES OF CALCULATIONS
  113. 2120 [153]"  MCONT RETURN TO MENU
  114. 2121 PRINT"[159]    [163][163][163][163][163][163] [163][163] [163][163][163][163]
  115. 3500 [153]"WHICH ONE ?";
  116. 3510 [146]198,7:[161]AN$:[139]AN$[178]""[167]3510
  117. 3515 [139]AN$[178]"M"[167][142]
  118. 3520 [145][197](AN$)[141]4001,5010,6010,7010,8010,9010,10010,11010,11510
  119. 3530 [137]2020
  120. 4001 [153]"LOADDO YOU WISH TO DESIGNATE THE ROWS         TO BE SUMMED?"
  121. 4002 [161]A$:[139]A$[178]""[167]4002
  122. 4003 [139]A$[178]"N"[167]S1[178]1:S2[178]49:[137]4005
  123. 4004 [133]"FIRST ROW";S1:[133]"LAST ROW";S2:[139]S1[177]S2[176]S1[179]0[176]S2[177]49[167]4001
  124. 4005 [153]CR$;CT$:[153]"SUM WILL BE STORED IN ROW"S2[170]1
  125. 4010 [129]X[178]1[164]14
  126. 4020 V(X,S2[170]1)[178]0
  127. 4030 [130]X
  128. 4040 [129]X[178]1[164]14
  129. 4050 [129]Y[178]S1[164]S2
  130. 4060 V(X,S2[170]1)[178]V(X,S2[170]1)[170]V(X,Y)
  131. 4070 [130]Y
  132. 4080 [130]X
  133. 4090 [142]
  134. 5010 [153]CR$;CT$:[153]"SUM WILL BE STORED IN COLUMN 13
  135. 5020 FORY=1TO48
  136. 5030 V(13,Y)=0
  137. 5040 NEXTY
  138. 5050 FORY=1TO48
  139. 5060 FORX=1TO12
  140. 5070 V(13,Y)=V(13,Y)+V(X,Y)
  141. 5080 NEXTX
  142. 5090 NEXTY
  143. 5100 RETURN
  144. 6010 INPUT"[147]DUPLICATE WHICH COLUMN";CX
  145. 6015 INPUT"PUT IT IN WHICH COLUMN";X
  146. 6030 FORY=1TO50
  147. 6040 V(X,Y)=V(CX,Y)
  148. 6050 NEXTY
  149. 6060 RETURN
  150. 7010 Y=0
  151. 7020 PRINT"[147]A[146]DD    M[146]ULTIPLY    S[146]UBTRACT    D[146]IVIDE
  152. 7030 [161]A$:[139]A$[178]""[167]7030
  153. 7040 [129]X[178]1[164]4:[139]A$[178][202]("AMSD",X,1)[167]Y[178]X
  154. 7050 [130]:[145]Y[137]7070,7130,7190,7250:[137]7030
  155. 7070 [133]"LOADAMOUNT TO ADD";AD
  156. 7080 [133]"WHAT COL #";X
  157. 7090 [133]"WHAT ROW #";Y
  158. 7100 V(X,Y)[178]V(X,Y)[170]AD
  159. 7110 [137]7999
  160. 7130 [133]"LOADAMOUNT TO MULTIPLY BY";ML
  161. 7140 [133]"WHAT COL #";X
  162. 7150 [133]"WHAT ROW #";Y
  163. 7160 V(X,Y)[178]V(X,Y)[172]ML
  164. 7170 [137]7999
  165. 7190 [133]"LOADAMOUNT TO SUBTRACT";SB
  166. 7200 [133]"WHAT COL #";X
  167. 7210 [133]"WHAT ROW #";Y
  168. 7220 V(X,Y)[178]V(X,Y)[171]SB
  169. 7230 [137]7999
  170. 7250 [133]"LOADAMOUNT TO DIVIDE BY";DV
  171. 7260 [133]"WHAT COL #";X
  172. 7270 [133]"WHAT ROW #";Y
  173. 7280 V(X,Y)[178]V(X,Y)[173]DV
  174. 7290 V(X,Y)[178][181](V(X,Y)[172]1000[170].5)[173]1000
  175. 7300 [137]7999
  176. 7999 [142]
  177. 8010 [133]"LOADHOW MANY ITEMS IN EACH ROW";AVE
  178. 8020 [153]CR$;CT$:[153]"AVERAGE WILL BE STORED IN COLUMN 14
  179. 8030 FORY=1TO50
  180. 8035 IFV(13,Y)=0THEN8050
  181. 8040 V(14,Y)=V(13,Y)/AVE:V(14,Y)=INT(V(14,Y)*1000+.5)/1000
  182. 8050 NEXTY
  183. 8060 RETURN
  184. 9010 INPUT"[147]WHICH IS BASE ROW";BR
  185. 9020 INPUT"WHICH IS ROW FOR PERCENTAGES";Y:IFBR=YTHENRETURN
  186. 9030 FORX=1TO13
  187. 9055 IFV(X,BR)=0THEN9075
  188. 9060 V(X,Y)=V(X,Y)/V(X,BR):V(X,Y)=INT(V(X,Y)*10000+.5)/100
  189. 9075 NEXTX
  190. 9080 RETURN
  191. 10010 INPUT"[147]WHICH IS BASE COLUMN";CX
  192. 10020 INPUT"WHICH IS COLUMN FOR PERCENTAGES";X:IFX=CXTHENRETURN
  193. 10030 FORY=1TO50
  194. 10055 IFV(CX,Y)=0THEN10075
  195. 10060 V(X,Y)=V(X,Y)/V(CX,Y):V(X,Y)=INT(V(X,Y)*10000+.5)/100
  196. 10075 NEXTY
  197. 10080 RETURN
  198. 11010 PRINT"[147]WHICH COLUMN DO YOU WANT TO SUM";
  199. 11020 INPUTCA:IFCA<1ORCA>15THEN11020
  200. 11030 PRINT"W[146]HOLE COLUMN OR P[146]ART OF COLUMN?"
  201. 11040 GETYN$:IFYN$<>"P"ANDYN$<>"W"THEN11040
  202. 11050 IFYN$="P"THENGOSUB11210:GOTO11065
  203. 11060 S1=1:S2=49
  204. 11065 V(CA,S2+1)=0
  205. 11070 FORY=S1TOS2
  206. 11080 V(CA,S2+1)=V(CA,S2+1)+V(CA,Y)
  207. 11090 NEXTY
  208. 11100 RETURN
  209. 11210 INPUT"ROW OF FIRST ITEM IN THE SUM";S1
  210. 11215 INPUT"ROW OF LAST ITEM IN THE SUM";S2:IFS1>S2ORS1<0ORS2>49THEN11210
  211. 11220 RETURN
  212. 11510 PRINT:PRINT"[145][145][145][145][145][145]HOW MANY CALCULATIONS (1-8)?"
  213. 11515 FORI=1TO5:PRINT"                  ":NEXT
  214. 11520 GETNM$:IFNM$=""THEN11520
  215. 11525 IFVAL(NM$)<0ORVAL(NM$)>8THEN11520
  216. 11530 NM=VAL(NM$):IFNM=0THENRETURN
  217. 11540 PRINT"[145][145][145][145][145][145]ENTER OPERATIONS IN THE ORDER YOU WANT  THEM TO BE PERFORMED."
  218. 11550 FORI=1TONM
  219. 11560 PRINT"ENTER OPERATION #"I"[157]           [157][157][157][157][157][157][157][157]";
  220. 11570 GETA$:OP(I)=VAL(A$):IFOP(I)<1OROP(I)>8THEN11570
  221. 11575 PRINTOP(I)
  222. 11580 NEXTI
  223. 11590 FORI=1TONM
  224. 11600 ONOP(I)GOSUB4001,5010,6010,7010,8010,9010,10010,11010
  225. 11610 NEXTI
  226. 11620 RETURN
  227. 12010 PRINT"[147]MAKE SURE PRINTER IS ON.":PRINT"...HIT ANY KEY WHEN READY."
  228. 12020 GETA$:IFA$=""THEN12020
  229. 12030 PRINT"DO YOU WANT TO DESIGNATE THE ROWS TO BE PRINTED?"
  230. 12040 GETA$:IFA$=""THEN12040
  231. 12050 IFA$="N"THENS1=1:S2=50:GOTO12070
  232. 12060 INPUT"FIRST ROW TO BE PRINTED";S1:INPUT"LAST ROW TO BE PRINTED";S2
  233. 12070 SP$="                   "
  234. 12080 OPEN4,4
  235. 12100 PRINT#4,"          COLUMNS    ";:FORI=1TO5:PRINT#4,I;"           ";:NEXT
  236. 12110 PRINT#4
  237. 12120 FORY=S1TOS2
  238. 12130 PRINT#4,LEFT$("ROW"+STR$(Y)+SP$,10);
  239. 12135 FORI=1TO5:PRINT#4,RIGHT$(SP$+STR$(V(I,Y)),14);:NEXTI:PRINT#4
  240. 12140 NEXTY:PRINT#4:PRINT#4
  241. 12150 PRINT#4,"          COLUMNS    ";:FORI=6TO10:PRINT#4,I;"           ";:NEXT
  242. 12155 PRINT#4
  243. 12160 FORY=S1TOS2
  244. 12170 PRINT#4,LEFT$("ROW"+STR$(Y)+SP$,10);
  245. 12175 FORI=6TO10:PRINT#4,RIGHT$(SP$+STR$(V(I,Y)),14);:NEXTI:PRINT#4
  246. 12180 NEXTY:PRINT#4:PRINT#4
  247. 12190 PRINT#4,"          COLUMNS    ";:FORI=11TO15:PRINT#4,I;"          ";:NEXT
  248. 12195 PRINT#4
  249. 12200 FORY=S1TOS2
  250. 12210 PRINT#4,LEFT$("ROW"+STR$(Y)+SP$,10);
  251. 12215 FORI=11TO15:PRINT#4,RIGHT$(SP$+STR$(V(I,Y)),14);:NEXTI:PRINT#4
  252. 12220 NEXTY
  253. 12230 PRINT#4:RETURN
  254.